﻿using Coldairarrow.Util;
using Coldairarrow.Util.ERQcde;
using System;

namespace MiniPackage
{
    /// <summary>
    /// AccessToken状态值维护
    /// </summary>
    public class AccessTokenManage
    {

        /// <summary>
        /// 小程序token 
        /// </summary>
        public static string JsapiTicket = null;
        /// <summary>
        /// 到期时间
        /// </summary>
        public static DateTime NextTime { get; set; }


        /*
        access_token是公众号的全局唯一票据，公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。
        access_token的存储至少要保留512个字符空间。
        access_token的有效期目前为2个小时，需定时刷新，重复获取将导致上次获取的access_token失效。
        */

        public static void RequestAccessToken(string appId, string secret)
        {
            try
            {
                Serilog.Log.Information("=======进入获取accentToken=======");
                JsapiTicket = XcxERQcdes.GetGzhSign(appId, secret);
                if (JsapiTicket.IsNullOrEmpty())
                {
                    throw new BusException("获取签名失败", -2);
                }
                //获取成功
                NextTime = DateTime.Now.AddSeconds(7200 - 60);

            }
            catch (Exception ex)
            {
                throw new Exception("获取签名失败", ex);
            }
        }
    }

}
